(function () {
    var d = document,
        w = window,
        p = parseInt,
        dd = d.documentElement,
        db = d.body,
        dc = d.compatMode == 'CSS1Compat',
        dx = dc ? dd : db,
        ec = encodeURIComponent;
    w.CHAT = {
        screenheight: w.innerHeight ? w.innerHeight : dx.clientHeight,
        username: "乐豆互动",
        userid: "ledouhudong",
        socket: null,
        headimgurl: "",
        //提交聊天消息内容
        submit: function () {
            var content = d.getElementById("content").value;
            if (content != '') {
                var obj = {
                    userid: this.userid,
                    username: this.username,
                    content: content,
                    headimgurl: this.headimgurl
                };
                this.socket.emit('message', obj);
                d.getElementById("content").value = '';
            }
            return false;
        },
        //更新系统消息，本例中在用户加入、退出的时候调用
        updateSysMsg: function (o, action) {
            //当前在线用户列表
            var onlineUsers = o.onlineUsers;
            //当前在线人数
            var onlineCount = o.onlineCount;
            //新加入用户的信息
            var user = o.user;
            //更新在线人数
            var userhtml = '';
            var separator = '';
            for (var key in onlineUsers) {
                if (onlineUsers.hasOwnProperty(key)) {
                    userhtml += separator + onlineUsers[key];
                    separator = '、';
                }
            }
            d.getElementById("online-count").innerHTML = '当前共有 ' + onlineCount + ' 人在线';
            //添加系统消息
            var html = '';
            html += '<div class="msg-system">';
            html += user.username;
            html += (action == 'login') ? ' 加入了聊天室' : ' 退出了聊天室';
            html += '</div>';
            var section = d.createElement('section');
            section.className = 'system J-mjrlinkWrap J-cutMsg';
            section.innerHTML = html;
        },

        init: function () {
            /*
             客户端根据时间和随机数生成uid,这样使得聊天室用户名称可以重复。
             实际项目中，如果是需要用户登录，那么直接采用用户的uid来做标识就可以
             */
            this.socket = io.connect('ws://www.ledouya.com/node');
            //连接websocket后端服务器
            //告诉服务器端有用户登录
            //监听新用户登录
            this.socket.on('login', function (o) {
                CHAT.updateSysMsg(o, 'login');
            });

            //监听消息发送
            this.socket.on('message', function (obj) {
                console.log(obj);
                addToScreen(obj);
            });

        }
    };
    w.CHAT.init();
    //通过“回车”提交信息
    d.getElementById("content").onkeydown = function (e) {
        e = e || event;
        if (e.keyCode === 13) {
            CHAT.submit();
        }
    };
})();